package com.silence.gmall.template;

import com.silence.gmall.common.vo.res.FileUploadResVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Author silence
 * @Email 792245022@qq.com
 * @Date 2025-01-21 00:00
 * @Description Minio 文件模板接口
 * # 同步网络时间
 * sudo ntpdate -s time.nist.gov
 */
public interface MinioTemplate {
    
    /**
     * 上传单个文件
     *
     * @param file 文件
     * @return 上传结果
     */
    FileUploadResVo uploadFile(MultipartFile file);
    
    /**
     * 上传单个文件到指定路径
     *
     * @param file 文件
     * @param path 存储路径（如：images/product/）
     * @return 上传结果
     */
    FileUploadResVo uploadFile(MultipartFile file, String path);
    
    /**
     * 批量上传文件
     *
     * @param files 文件列表
     * @return 上传结果列表
     */
    List<FileUploadResVo> uploadFiles(List<MultipartFile> files);
    
    /**
     * 批量上传文件到指定路径
     *
     * @param files 文件列表
     * @param path 存储路径
     * @return 上传结果列表
     */
    List<FileUploadResVo> uploadFiles(List<MultipartFile> files, String path);
    
    /**
     * 删除文件
     *
     * @param objectName 对象名
     * @return 删除结果
     */
    boolean deleteFile(String objectName);
    
    /**
     * 获取文件预览URL
     *
     * @param objectName 对象名
     * @param expires 过期时间（秒）
     * @return 预览URL
     */
    String getPreviewUrl(String objectName, Integer expires);
}